package com.aw.generic.ejemplo002;

import com.aw.generic.ejemplo001.Caja;
import com.aw.generic.ejemplo001.Fruta;
import com.aw.generic.ejemplo001.Manzana;
import com.aw.generic.ejemplo001.Naranja;

/**
 * User: gmc
 * Date: 15/06/2010
 */
public class EjemploInicializacion {
    public static void main(String[] args) {
        // Ejemplo de generics y subtyping
        Caja<Naranja> cajaDeNaranjas = new Caja<Naranja>();
//        Caja<Fruta> cajaDeFrutas = cajaDeNaranjas;

        // Ejemplo de wildcards ?
        SelladorDeCaja sellador = new SelladorDeCaja();
        Caja<Fruta> cajaDeFrutas = new Caja<Fruta>();
        Caja<Manzana> cajaDeManzanas = new Caja<Manzana>();
        Caja<Object> cajaDeObjetos = new Caja<Object>();

        sellador.sellarCajaDeFruta(cajaDeFrutas);
//        sellador.sellarCajaDeFruta(cajaDeManzanas);
//        sellador.sellarCajaDeFruta(cajaDeObjetos);

//        sellador.sellarCajaDeManzanas(cajaDeFrutas);
        sellador.sellarCajaDeManzanas(cajaDeManzanas);
//        sellador.sellarCajaDeManzanas(cajaDeObjetos);

//        sellador.sellarCajaDeObjectos(cajaDeFrutas);
//        sellador.sellarCajaDeObjectos(cajaDeManzanas);
        sellador.sellarCajaDeObjectos(cajaDeObjetos);

        sellador.sellarCualquierCaja(cajaDeFrutas);
        sellador.sellarCualquierCaja(cajaDeManzanas);
        sellador.sellarCualquierCaja(cajaDeObjetos);
    }
}
